'''
Created on 23/04/2013

@author: jean
'''

from pm.database import db
from sqlalchemy import ForeignKey

class UsuariosRolesFases(db.Model):
    '''
    Clase que asocia a un usuario con su rol
    '''
    __tablename__ = 'usuarios_roles_fases'
    id_usuario_rol_fases = db.Column(db.Integer, primary_key=True, nullable=False)
    '''
       PrimaryKey de la tabla
    '''
    id_usuario_rol = db.Column(db.Integer, ForeignKey('usuarios_roles.id_usuario_rol'), nullable=False)
    '''
       Usuario Rol al que se relaciona el registro
    '''
    id_fase = db.Column(db.Integer, ForeignKey('fases.id_fase'),nullable=True)
    '''
       Fase al que se relaciona el registro
    '''
    activo = db.Column(db.Boolean, nullable=True)
    '''
       Indica si el el registro se encuentra activo con el proyecto
    '''
    id_proyecto = db.Column(db.Integer, ForeignKey('proyectos.id_proyecto'),nullable=True)
    """
        Indica a que proyecto pertenece el rol de ese usuario
    """
    activo_fase = db.Column(db.Boolean, nullable=True)
    '''
       Indica si el el registro se encuentra activo con el proyecto
    '''
    
    
    def __init__(self,id_usuario_rol, id_fase,id_proyecto, activo,activo_fase):
        
        '''
        @param id_usuario_rol: id que asocia con usuario y rol
        @param id_fase: id de la fase en la que ese usuario tiene ese rol
        @param activo: si esta asociacion se encuentra activa o no
        @param id_proyecto: proyecto al que esta asociado ese rol con ese usuario   
        '''
        self.id_usuario_rol = id_usuario_rol
        self.id_fase = id_fase
        self.id_proyecto = id_proyecto
        self.activo = activo,
        self.activo_fase= activo_fase
    
    def __repr__(self):
        return '{id_usuario_rol_fases:%s, id_usuario_rol:%s, id_fase:%s}' % (self.id_usuario_rol_fases, self.id_usuario_rol, self.id_fase)
    
    def __json__(self):
        '''
         devuelve el json que representa a UsuariosRolesFases
        '''
        return {'id':self.id_usuario_rol_fases , 
                'id_usuario_rol': self.id_usuario_rol, 
                'id_fase': self.id_fase,
                'id_proyecto': self.id_proyecto,
                'activo': self.activo,
                'activo_fase': self.activo_fase
                }